Python下微信公共号开发如何从网络url上传素材

微信上传图片的接口定义非常不友好,一般情况只能从local上传图片。当我们想通过云端存储介质上传或者url链接上传时,很难有有效的方法来处理。网上寥寥无几提出了一些利用php语言修改文件参数什么的来上传。但对于python来说,一直没有有效的办法。这里我找到一种极为简单方便的方法来上传文件

为了实现自己微信公众号自动回复图片消息,我被微信蛋疼无比的素材接口折磨疯掉了。但老天眷顾,一次偶然的机会我发现了可以利用request package 极为简单的实现上传功能。

1
2
3
4
5
6
7
8
access_token="your access_token"
cc = "f(x)+1" # the string
pp=requests.get("http://latex.codecogs.com/png.latex?\dpi{300} \huge %s" % cc).content # get the online png data (binary data)
files = {'media': ('temp2.png',pp)}
# the first item "temp2.png" is the file name, the second one is the file data
upload_url="https://api.weixin.qq.com/cgi-bin/media/upload?access_token="+access_token+"&type=image" # set your access_token
r =requests.post(upload_url, files=files) # upload
media_id=json.loads(r.content)['media_id'] # if it is success, you get media id

当然这里可以将
iles = {'media': ('temp2.png',pp)}
pp 换成 新浪sae storage 中的 get_object(“filename”) 将storage 存储的图片上传到微信上